package com.qf.service.impl;

import com.qf.dao.AdminDao;
import com.qf.dao.UserDao;
import com.qf.dao.impl.AdminDaoImpl;
import com.qf.dao.impl.UserDaoImpl;
import com.qf.pojo.Admin;
import com.qf.pojo.PageBean;
import com.qf.pojo.User;
import com.qf.service.AdminService;

import java.sql.SQLException;
import java.util.List;

/**
 * @author 高圆圆
 */
public class AdminServiceImpl  implements AdminService {

    /**
     * 通过用户名和密码查询管理员
     * @param username 前台输入的用户名
     * @param password 前台输入的密码
     * @return 返回管理员实体
     */
    @Override
    public Admin getAdmin(String username, String password) {
        try {
            //获取数据,调用Dao
            AdminDao adminDao = new AdminDaoImpl() ;
            Admin admin = adminDao.selectAdminByUsername(username);
            if(admin!=null){
                if(password.equals(admin.getPassword())){
                    //密码一致
                    //返回
                    return admin ;
                }
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }

    /**
     * 查询所有用户
     * @return 返回用户列表
     */
    @Override
    public List<User> getAllUser() {
        //调用AdminDao----查询所有数据
        try {
            AdminDao adminDao = new AdminDaoImpl() ;
            List<User> users = adminDao.selectUsers();
            if(users!=null || users.size()>0){
                return users ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }

    /**
     * 通过用户uid获取用户实体
     * @param uid 用户编号
     * @return 返回用户实体
     */
    @Override
    public User findUserByUid(String uid) {
        try {
            //调用数据访问接口
            AdminDao adminDao = new AdminDaoImpl() ;
            User user = adminDao.selectUserByUid(uid);
            if(user!=null){
                return user ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }

    /**
     * 更新用户
     * @param user 用户实体
     */
    @Override
    public void update(User user) {
        try {
            //调用数据访问接口
            AdminDao adminDao = new AdminDaoImpl() ;
            //更新
            adminDao.updateUser(user) ;
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    /**
     * 通过用户uid编号删除指定用户
     * @param uid 用户编号
     */
    @Override
    public void deleteUser(String uid) {

        try {
            //调用AdminDao
            AdminDao adminDao = new AdminDaoImpl() ;
            int count = adminDao.deleteUser(uid);

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    /**
     * 针对用户的分页查询
     * @param currentPage 当前页码
     * @param pageSize  每页显示的条数
     * @return 返回的分页实体
     */
    @Override
    public PageBean<User> findUserByPage(int currentPage, int pageSize) {

        try {
            //调用管理员的数据访问接口
            AdminDao adminDao = new AdminDaoImpl() ;
            //获取的分页用户数据
            List<User> list = adminDao.selectUserByPage(currentPage, pageSize);

            //获取的总记录数
            int totalCount = adminDao.selectTotalCount();
            if(list!=null && totalCount>0){
                return new PageBean<>(currentPage,pageSize,totalCount,list);
            }


        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return  null ;

    }
}
